<?php

/*
 * 权限认证
 * @param $rule 要验证的规则名称；
 * @param $uid 用户的id；
 * @param $relation 规则组合方式，默认为‘or’，以上三个参数都是根据Auth的check（）函数来的，
 */

/**
 * 检查权限
 * @param name string|array  需要验证的规则列表,支持逗号分隔的权限规则或索引数组
 * @param uid  int           认证用户的id
 * @param string mode        执行check的模式
 * @param relation string    如果为 'or' 表示满足任一条规则即通过验证;如果为 'and'则表示需满足所有规则才能通过验证
 * @return boolean           通过验证返回true;失败返回false
 */
function auth_check($rule, $uid, $type = 1, $mode = 'url', $relation = 'or')
{
    //判断当前用户UID是否在定义的超级管理员参数里
    if ($uid <= 1)
        return true;
    else
    {
        $mAuth = new \auth\Auth();
        return $mAuth->check($rule, $uid, $type, $mode, $relation) ? true : false;
    }
}

/**
 * 导航 - 判断Url是否为当前页
 * @param  string  $name 	控制器名/方法名
 * @param  string  $ret     为真时返回的值
 * @return string           返回$ret
 */
function is_navi($name = '', $ret = 'active')
{
    list($controller, $action) = array_map('strtolower', explode('/', trim($name)));
    
    if( is_controller($controller) && is_action($action) )
        return $ret;
    else
        return false;
}

/**
 * 判断当前控制器名称
 * @param  [type]  $name 控制器名称，多个用 | 分割
 * @param  string  $ret  返回字符串 默认 active
 * @return boolean       [description]
 */
function is_controller($name, $ret = 'active')
{
    $controller = array_map('strtolower', explode('|', trim($name)));

    $request = \think\Request::instance();
    if( in_array(strtolower($request->controller()), $controller) )
        return $ret;
    else
        return false;
}

/**
 * 判断当前方法名称
 * @param  [type]  $name 方法名称，多个用 | 分割
 * @param  string  $ret  返回字符串 默认 active
 * @return boolean       [description]
 */
function is_action($name, $ret = 'active')
{
    $action = array_map('strtolower', explode('|', trim($name)));
    
    $request = \think\Request::instance();
    if( in_array(strtolower($request->action()), $action) )
        return $ret;
    else
        return false;
}



